package cn.xxc.miraiDemo.listener;

import net.mamoe.mirai.Bot;
import net.mamoe.mirai.message.GroupMessage;
import net.mamoe.mirai.message.data.*;

import java.io.File;
import java.util.function.Consumer;

public class DemoListener implements Consumer<GroupMessage> {
    @Override
    public void accept(GroupMessage event) {
        // 在此放置你的代码
        event.getGroup().sendMessage(new At(event.getSender()));// at发送者
        event.getGroup().sendMessage(event.getGroup().uploadImage(new File("图片文件")));// 发送图片
        event.getGroup().sendMessage(new Face(0));// 发送id为0的表情
        event.getGroup().sendMessage("这是一条消息");// 只发送一条文字消息
        event.getGroup().sendMessage(new PokeMessage("显示的名称", PokeMessage.Poke.getType(), PokeMessage.Poke.getId()));// 发送一个戳一戳
        event.getGroup().sendMessage(MessageUtils.flash(event.getGroup().uploadImage(new File("图片文件"))));// 发送一个闪照
        event.getGroup().sendMessage(
                MessageUtils.newChain("测试消息")
                        .plus(event.getGroup().uploadImage(new File("图片文件")))
                        .plus(new Face(0))
        );// 发送一个包含多个元素的消息
        // 0替换为你的QQ机器人号，1替换为你的群号，不要删除L
        Bot.getInstance(0L).getGroup(1L).sendMessage("同上");
        // 处理一个At
        At at = event.getMessage().firstOrNull(At.Key);
        // 处理一个Image同理
        Image image = event.getMessage().firstOrNull(Image.Key);
        // 处理多个At/Image
        event.getMessage().forEach(message -> {
            // 遍历一个消息包含的所有消息类型
            if (message instanceof At) {
                // 当类型为at一个人时
                At _at = (At) message;// 因为已经判断过了，所以强转不会报错
            } else if (message instanceof Image) {
                // 当类型为图片时
                Image _image = (Image) message;
            } else if (message instanceof Face) {
                // 当类型为表情时
                Face face = (Face) message;
            } else if (message instanceof PokeMessage) {
                // 当类型为戳一戳时
                PokeMessage pokeMessage = (PokeMessage) message;
            } else if (message instanceof FlashImage) {
                // 当类型为闪照时
                FlashImage flashImage = (FlashImage) message;
            }
        });
    }
}
